import store from '../index';
const requestUrl = '192.168.0.201:17000';
//封装http请求
const codeMessage = {
    200: '服务器成功返回请求的数据。',
    201: '新建或修改数据成功。',
    202: '一个请求已经进入后台排队（异步任务）。',
    204: '删除数据成功。',
    400: '发出的请求有错误，服务器没有进行新建或修改数据的操作。',
    401: '用户没有权限（令牌、用户名、密码错误）。',
    403: '用户得到授权，但是访问是被禁止的。',
    404: '发出的请求针对的是不存在的记录，服务器没有进行操作。',
    406: '请求的格式不可得。',
    410: '请求的资源被永久删除，且不会再得到的。',
    422: '当创建一个对象时，发生一个验证错误。',
    500: '服务器发生错误，请检查服务器。',
    502: '网关错误。',
    503: '服务不可用，服务器暂时过载或维护。',
    504: '网关超时。',
};

/**
 * @description 遍历参数对象
 * @author Jimmery
 * @param {*} obj 
 */
function subStringURL(obj) {
    let param = "";
    for(let item in obj) {
        console.log(item);
        param += item + "=" + obj[item] + "&";
    }
    return param;
}

/**
 * @description fetch大体的方法
 * @author Jimmery
 * @param {*} url 请求地址
 * @param {*} option 请求参数
 * @param {*} method 请求的方法
 */
function fetchRequest(url, option, method) {
    let newOption = {};
    let param = subStringURL(option);
    //取出最后一位参数
    let lastParam = param.replace(/^(.*[n])*.*(.|n)$/g, "$2");
    if(lastParam == "&") {
        param = param.substring(0, param.length - 1);
    }
    url = url + "?" + param
    if( 'GET' == method) {

    } else {

    }
    console.log(url);
    //开始连接接口
    return fetch(url)
    .then(response => {
      // if (newOptions.method === 'DELETE' || response.status === 204) {
      //   return response.text();
      // }
      consle.log("请求结果");
      return response.json();
    })
    .catch(e => {   
      const { dispatch } = store;
      const status = e.name;
      if (status === 401) {
        dispatch({
          type: 'login/logout',
        });
        return;
      }
      if (status === 403) {
        dispatch(routerRedux.push('/exception/403'));
        return;
      }
      if (status <= 504 && status >= 500) {
        dispatch(routerRedux.push('/exception/500'));
        return;
      }
      if (status >= 404 && status < 422) {
        dispatch(routerRedux.push('/exception/404'));
      }
    });
}

export function GET(url, option) {
    return fetchRequest(url, option, 'GET');
}

export function POST(url, option) {
    return fetchRequest(url, option, 'POST');
}

//测试一下500